package models

import (
	"TheTearAfter/mysql"
	"github.com/jinzhu/gorm"
)

/**
 * @File : messageTypeClass.go
 * @Description : 信息块类别
 * @Author : chen
 * @Date : 2024/4/7
 */
type MessageTypeClass struct {
	gorm.Model
	Name string `json:"name"` // 信息类名称
	Img  string `json:"img"`  // 信息类图像
}

func NewMessageTypeClass() (item MessageTypeClass) {
	item.Name = "Sleep"
	item.Img = "https://s21.ax1x.com/2024/04/10/pFXPTeK.png"
	return
}

// 创建
func CreateAMessageTypeClass(item *MessageTypeClass) (*MessageTypeClass, error) {
	err := mysql.DB.Create(&item).Error
	return item, err
}

// 获取所有
func GetAllMessageTypeClass() (itemList []*MessageTypeClass, err error) {
	err = mysql.DB.Find(&itemList).Error
	return
}

// 通过 id 获取
func GetMessageTypeClassByID(id uint) (item *MessageTypeClass, err error) {
	item = &MessageTypeClass{}
	err = mysql.DB.Where("id = ?", id).First(&item).Error
	return
}

// 更新
func UpdataAMessageTypeClass(item *MessageTypeClass) (err error) {
	err = mysql.DB.Save(&item).Error
	return
}

// 通过 id 删除
func DeleteMessageTypeClassByID(id uint) (err error) {
	linkList, err := GetALLMessageTypeClass_Link_MessageBlockByMessageTypeClass(id)
	if err != nil {
		return
	}

	for _, link := range linkList {
		err = DeleteMessageTypeClass_Link_MessageBlockByID(link.ID, true)
		if err != nil {
			return
		}
	}

	err = mysql.DB.Where("id = ?", id).Delete(MessageTypeClass{}).Error
	return
}
